#include<cstdio>
#include<cstring>
using namespace std;

double p[16][16];
int h[16][16];
double ex[17][17][17];
double pr[17][17][17];
int m,n; // m visitor n city

void init(){
    for (int i=0; i<m; i++){
        p[i][0]=1;
        scanf("%lf",&p[i][1]);
        for (int j=2; j<n; j++) p[i][j]=p[i][j-1]*p[i][1];
    }
    for (int i=0; i<m; i++)
        for (int j=0; j<n; j++) scanf("%d",&h[i][j]);
}

double calc(){
    double rst=0;
    for (int i=0; i<m; i++)
        for (int j=0; j<n; j++) rst+=p[i][j]*h[i][j];

    for (int j=1; j<n; j++){
        memset(ex,0,sizeof(ex));
        memset(pr,0,sizeof(pr));
        pr[0][0][0]=1;
        for (int i=0; i<m; i++)
        for (int u=0; u<=m && u<=i+1; u++)
        for (int v=0; v<=u; v++){
            double &pn=pr[i+1][u][v];
            double &en=ex[i+1][u][v];
            pn=pr[i][u][v]*(1-p[i][j-1]);
            en=ex[i][u][v]*(1-p[i][j-1]);
            if (u){
                pn+=pr[i][u-1][v]*p[i][j-1]*(1-p[i][1]);
                en+=ex[i][u-1][v]*p[i][j-1]*(1-p[i][1]);
            }
            if (v){
                pn+=pr[i][u-1][v-1]*p[i][j];
                en+=ex[i][u-1][v-1]*p[i][j] +h[i][j]*pr[i][u-1][v-1]*p[i][j];
            }
        }
        for (int u=1; u<=m; u++)
            for (int v=0; v<=u; v++)
                rst+=ex[m][u][v]*v/u;
    }
    return rst;
}

int main(){
    while (scanf("%d%d",&m,&n)!=EOF){
        init();
        double rst=calc();
        printf("%.7lf\n",rst);
    }
    return 0;
}
